//package io.github.talelin.latticy.controller.v1;
//
//import io.github.talelin.latticy.bo.OrderVO;
//import io.github.talelin.latticy.common.configuration.KieStrengthenConfig;
//import io.github.talelin.latticy.common.configuration.MyKieContext;
//import io.github.talelin.latticy.common.configuration.MyKieContexts;
//import io.github.talelin.latticy.model.RulesDO;
//import io.github.talelin.latticy.service.RulesService;
//import io.github.talelin.latticy.vo.UpdatedVO;
//import lombok.extern.slf4j.Slf4j;
//import org.kie.api.runtime.KieContainer;
//import org.kie.api.runtime.KieSession;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * @authoer:wulongbo
// * @createDate:2022/8/8
// * @description: 重新加载规则
// */
//
//@Slf4j
//@RestController
//@RequestMapping("/kieReloading")
//public class KieStrengthenController {
//
//    @Autowired
//    MyKieContexts myKieContexts;
//
//    @Autowired
//    RulesService rulesService;
//
//    @Autowired
//    KieStrengthenConfig kieConfig;
//
//    /**
//     * 重新加载规则
//     *
//     * @return
//     */
//    @RequestMapping("/reloading")
//    public UpdatedVO reloading(String type) {
//        try {
//            List<RulesDO> byType = rulesService.getRulesByType(type);
//            List<String> drools = new ArrayList<>();
//            byType.forEach(d -> drools.add(d.getRule()));
//            myKieContexts.cover(type, kieConfig.myKieContext(drools));
//            return new UpdatedVO();
//        } catch (Exception e) {
//            log.error("重载kie异常,异常为:{}", e.getMessage());
//            return new UpdatedVO();
//        }
//    }
//
//    /**
//     * 图书优惠计算
//     *
//     * @return
//     */
//    @RequestMapping("/calculate")
//    public UpdatedVO calculate(String type) {
//        MyKieContext myKieContext = myKieContexts.get(type);
//        // 获得Kie容器对象
//        KieContainer kieClasspathContainer = myKieContext.getKieContainer();
//        //会话对象，用于和规则引擎交互
//        KieSession kieSession = myKieContext.getKieSession();
//        //构造订单对象，设置原始价格，由规则引擎根据优惠规则计算优惠后的价格
//        OrderVO order = new OrderVO();
//        order.setOriginalPrice(210D);
//        //将数据提供给规则引擎，规则引擎会根据提供的数据进行规则匹配
//        kieSession.insert(order);
//        //激活规则引擎，如果规则匹配成功则执行规则
//        kieSession.fireAllRules();
//        System.out.println("优惠前原始价格：" + order.getOriginalPrice() +
//                "，优惠后价格：" + order.getRealPrice());
//        return new UpdatedVO();
//    }
//}
